<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>



  <script>
    // var reg = /abc/i  //i 忽略大小写，g 全局匹配，返回所有匹配的字符串,m 匹配多行 

    var reg = new RegExp("abc", "i")

    var reg1 = RegExp(reg) //返回的是reg的引用，本质是同一个对象

    var str = 'abCd'

    var reg2 = new RegExp('^a',"gm")
    var str2 = 'abacdeds\na'
    var a = str2.match(reg2)



    // reg.test()  只能用来判断是否符合，返回true false
    
    // str.match()  能够返回匹配的字符串和 个数

    var reg = /[0-9A-z][1234567890][1234567890]/g  // [0-9] [0-9 A-z]   [cd]  里面是区间，只能匹配一个字符  [] 内为表达式，表示0-9的数字，且为连续3个
    var str3 = '891734hjnwdbf1238dsf234bd8d8fo98fd'

    var reg3 = /[^a]/    //^在表达式中，表示除了

    var reg4 = /(abc|bcd)/   //表示 "abc" 或 "bcd"


    // \w ===[0-9A-z_]     \W === [^\w]
    // \d === [0-9]   \D === [^\d]
    // \s === [\t\n\r\v\f + 空格 ]   \S === [^\s]
    // \b 单词边界

    var reg = /\babc\b/g
    var str5 = "sf bc abc fff abc"

    var reg = /[\u0000-\uffff]/g   // unicode

    // /./ === /^\r\n/    匹配除了回车 换行的一切字符


    //  n+ {1,}  1到无数次
    // n* {0,}   0到无数次
    // n?{0,1}

    var reg = /\w{2}/g
    var str6 = "aaaaaaaaaaaaa"


    // reg.exec(str6)
    // reg.lastIndex = 0 可以调整每次reg.exec 后的游标


    // n$ 匹配任何结尾为n的字符串
    // ^n 匹配任何开头为n的字符串
    // var reg = /^abc$/  匹配 只能长度为3，内容为abc的字符串


    // /(a)\1\1\1(w)\2/g   (a)  会记录里面匹配的内容 \1会引用第一个子表达式的内容 \1\1\1则匹配3次

    // 若要匹配aabb   /(\w)\1(\w)\2/g


    // var reg = /a/g
    // var str = "aa"
    // str.replace(reg,"b")   b替代a  若不用正则表达式，则只能够replace一个字母


    // the-first-name  ===>  theFirstName  变小驼峰写法
    // var reg = /-(\w)/g
    // var str = "the-first-name"
    // console.log(str.replace(reg,function($,$1){
    //   return $1.toUpperCase()
    // }));


    // 正向预查
    // var str = "abaaaaa"
    // var reg = /a(?b)/g   b作为修饰 查a

  </script>

</body>

</html>